These step-by-step tutorials will guide you to build a complete application that analyzes a 1D barcode from an image and output the value and type the terminal. The tutorials are for:
C++
Prerequisites:
- Before running this tutorial, a license for Barcode Xpress for ActiveX (VB6) should already be installed.
Steps:
- Launch VC++ (below project has been tested in VS2013).
- Create a new CLR Empty project and name it BXTutorial.
- Add Windows Form to this project.
- Right-click on the project and select Add > New Item.
- Select UI > Windows Form, its default name is MyForm.
- Set application entry point.
- Add below code to MyForm.cpp:
|
Copy Code
|
#include "MyForm.h"
using namespace System;
using namespace System::Windows::Forms;
[STAThread]
void main(array<String^>^ args) {
Application::EnableVisualStyles();
Application::SetCompatibleTextRenderingDefault(false);
BXTutorial::MyForm form;
Application::Run(%form);
}
|
- Right-click your project in the Solution Explorer and click Properties.
- Under Configuration Properties > Linker > Advanced, change Entry Point to "main" (without quotation marks).
- Under Configuration Properties > Linker > System, change SubSystem to Windows (/SUBSYSTEM/WINDOWS).
- Add ActiveX component to this project.
- Open the design view, right-click on the Toolbox panel and select Choose Items…
- On the dialog, go to the tab COM Components.
- Add Accusoft BarcodeXpress 12 and Accusoft ImagXpress 13 to your toolbox
- Drag the two controls to MyForm.
- Drag OpenFileDialog from Toolbox > Dialogs to MyForm.
- Select the component ImageXpress and set the property CtlAutoSize to ISIZE_BestFit.
- Add menu to MyForm
- From Toolbox > Menu&Toolbars, select MenuStrip and add to MyForm.
- Add a menu, "File", and sub menu, "Open", named mnuOpen.
- Add an additional sub menu, "Exit", named mnuExit.
- Double-click on Open and add the code below:
|
Copy Code
|
private: System::Void mnuOpen_Click(System::Object^ sender, System::EventArgs^ e) {
if (openFileDialog1->ShowDialog() == System::Windows::Forms::DialogResult::OK)
{
axImagXpress1->FileName = openFileDialog1->FileName;
}
}
|
- From the design window, double-click on Exit and add the code below:
|
Copy Code
|
private: System::Void mnuExit_Click(System::Object^ sender, System::EventArgs^ e) {
Application::Exit();
}
|
- Add button to MyForm.
- Add one button from Toolbox, set the name to btnReadBarcode and set Text to "Read 1D Barcode".
- Double-click on that button and add below code:
|
Copy Code
|
private: System::Void btnReadBarcode_Click(System::Object^ sender, System::EventArgs^ e) {
//Set barcode type to all1D.
axBarcodeXpress1->BarcodeType = 0;
// Set the read region of interest to all zero
// so the entire images is searched.
axBarcodeXpress1->ReaderAreaHeight = 0;
axBarcodeXpress1->ReaderAreaWidth = 0;
axBarcodeXpress1->ReaderAreaX = 0;
axBarcodeXpress1->ReaderAreaY = 0;
if (axImagXpress1->hDIB == 0)
{
MessageBox::Show("Error: You must select an image!");
return;
}
axBarcodeXpress1->AnalyzehDib(axImagXpress1->hDIB);
int numBC = axBarcodeXpress1->NumBarcodes;
String^ bcName;
String^ bcResult;
String^ result;
for (int i = 0; i < numBC; i++)
{
axBarcodeXpress1->GetBarcode(i);
bcName = axBarcodeXpress1->BarcodeCodeName;
bcResult = axBarcodeXpress1->BarcodeResult;
result += "#" + i.ToString() + " Type: " + bcName + " Value: " + bcResult + "\n";
}
MessageBox::Show(result);
}
|
- Registration.
- To register BarcodeXpress and ImagXpress, add the following code to MyForm.h:
|
Copy Code
|
MyForm(void)
{
InitializeComponent();
// The SetSolutionName, SetSolutionKey and possibly the SetOEMLicenseKey method must be called to distribute the runtime. Note that the SolutionName, SolutionKey and OEMLicenseKey values shown below are only examples.
//axBarcodeXpress1->SetSolutionName("YourSolutionName");
//axBarcodeXpress1->SetSolutionKey(12345, 12345, 12345, 12345);
//axBarcodeXpress1->SetOEMLicenseKey("1.0.AStringForOEMLicensingContactAccusoftSalesForMoreInformation...");
//axImagXpress1->SetSolutionName("YourSolutionName");
//axImagXpress1->SetSolutionKey(12345, 12345, 12345, 12345);
//axImagXpress1->SetOEMLicenseKey("1.0.AStringForOEMLicensingContactAccusoftSalesForMoreInformation...");
}
|
- Run the project.
- Select File > Open and choose one image with a 1D barcode on it.
- Click the Read 1D Barcode button.
- A dialog with the barcode result displays.
VB6
Prerequisites:
- Before running this tutorial, a license for Barcode Xpress for ActiveX (VB6) should already be installed.
Steps:
|
The example code below includes function header and footer. |
- Launch VB6 with administrator’s permission.
- Create a Standard EXE project.
- Add BX12, IM13 and Common Dialog component to this project.
- Go to menu Project\Componets…
- Select Accusoft Barcode Xpress v12.0, Accusoft ImageXpress 13.0 and Microsoft Common Dialog Control 6 (SP6). Click Ok.
- Double-click the three new icons and add them to Form1.
- Click the ImagXpress control and set property AutoSize to value “4 - ISIZE_BestFit”.
- Add Menu:
- Right-click on the panel of Form1 and select Menu Editor.
- Add a menu, "File", and sub menu, "Open", named mnuOpen.
- Add an additional sub menu, "Exit", named mnuExit.
- Add below code for File > Open:
|
Copy Code
|
Private Sub mnuOpen_Click()
With CommonDialog1
.CancelError = True
.DialogTitle = "Open 1-bit, 8-bit or 24-bit Image File"
.Filter = "TIFF (*.tif)|*.tif|BMP (*.bmp)|*.bmp|All Files (*.*) |*.*"
.InitDir = App.Path & "\..\..\..\..\..\..\Common\Images\"
.Action = 1
End With
With ImagXpress1
.FileName = CommonDialog1.FileName
If .FileName = "" Then
MsgBox "Please pick a filename"
End If
'.Width = 6900
'.Height = 4000
End With
End Sub
|
- Add below code for File >Exit:
|
Copy Code
|
Private Sub mnuExit_Click()
End
End Sub
|
- Add Free memory function to Form 1:
|
Copy Code
|
Private Declare Function GlobalFree Lib "kernel32" (ByVal hMem As Long) As Long
|
- Add a button to Form1. Then set its Caption to "Read 1D Barcode" and Name to "btnRead1DBarcode".
- Add below code for the click event:
|
Copy Code
|
Private Sub btnRead1DBarcode_Click()
Dim result As String
Dim i As Long
Dim hDib As Long
If ImagXpress1.hDib = 0 Then
MsgBox ("No file loaded")
Else
Me.MousePointer = vbHourglass
DoEvents
hDib = ImagXpress1.CopyDIB
BarcodeXpress1.AnalyzehDib hDib
BarcodeXpress1.BarcodeType = 0 ‘set barcode type to all1D
If BarcodeXpress1.NumBarcodes > 0 Then
For i = 0 To BarcodeXpress1.NumBarcodes - 1
BarcodeXpress1.GetBarcode i
result = result & "Barcode #" & i & Chr$(13) & _
"Barcode value = " & BarcodeXpress1.BarcodeResult & Chr$(13) & _
"Barcode type = " & BarcodeXpress1.BarcodeCodeName & Chr$(13)
Next i
MsgBox result
Else
MsgBox "No barcodes were found. Error = " & BarcodeXpress1.SSError & ". " & BarcodeXpress1.SSErrorMsg, , _
"Smartscan Xprebarcodexpress1 Barcode Sample"
End If
'*****Call the GlobalFree function to "free" the barcode hDib
GlobalFree hDib
Me.MousePointer = vbDefault
DoEvents
End If
End Sub
|
- Register the product. If you have a license, you can fill your license information in the below code:
|
Copy Code
|
Private Sub Form_Load()
' The SetSolutionName, SetSolutionKey and possibly the SetOEMLicenseKey method must be
' called to distribute the runtime. Note that the SolutionName, SolutionKey and
' OEMLicenseKey values shown below are only examples.
'BarcodeXpress1.SetSolutionName "YourSolutionName"
'BarcodeXpress1.SetSolutionKey 12345, 12345, 12345, 12345
'BarcodeXpress1.SetOEMLicenseKey "1.0.AStringForOEMLicensingContactAccusoftSalesForMoreInformation..."
'
'ImagXpress1.SetSolutionName "YourSolutionName"
'ImagXpress1.SetSolutionKey 12345, 12345, 12345, 12345
'ImagXpress1.SetOEMLicenseKey "1.0.AStringForOEMLicensingContactAccusoftSalesForMoreInformation..."
End Sub
|
- Run the project
- Select File > Open and select one image with a 1D barcode on it.
- Click the Read 1D Barcode button.
- A dialog with the barcode result will displays.